package domena;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.UniqueConstraint;

import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.security.authentication.encoding.Md5PasswordEncoder;

@Entity
@Table(name="USERS", uniqueConstraints = {
		@UniqueConstraint(columnNames = "LOGIN")})
public class User {

	private long id;
	private String login;
	private String haslo;
	private boolean aktywne;
	private Uzytkownik uzytkownik;
	private Lektor lektor;
	private Uprawnienie uprawnienie;
	
	@Id
	@Column(name="ID_USERS", unique = true, nullable = true)
	@GeneratedValue(strategy = IDENTITY)
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	@Column(name="LOGIN")
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "UPRAWNIENIE_ID", nullable = true)
	public Uprawnienie getUprawnienie() {
		return this.uprawnienie;
	}
 
	public void setUprawnienie(Uprawnienie uprawnienie) {
		this.uprawnienie = uprawnienie;
	}
	@Column(name="HASLO")
	public String getHaslo() {
		return haslo;
	}
	public void setHaslo(String haslo) {
		Md5PasswordEncoder encoder = new Md5PasswordEncoder();
	    String hashedPass = encoder.encodePassword(haslo, null);
		haslo=hashedPass;
		this.haslo = haslo;
	}
	@Column(name="AKTYWNE")
	public boolean isAktywne() {
		return aktywne;
	}
	public void setAktywne(boolean aktywne) {
		this.aktywne = aktywne;
	}
	
}
